package com.example.androidlesson.api;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;


/**
 * Created by  on 2020/3/4 0004.
 * 定义一个接口（封装URL地址和数据请求）
 * <p>
 * 1. @FormUrlEncoded:表示请求实体是一个Form表单，每个键值对需要使用@Field注解
 * 2. @Multipart：表示请求实体是一个支持文件上传的Form表单，需要配合使用@Part,适用于 有文件 上传的场景
 * 3. @Streaming:表示响应体的数据用流的方式返回，适用于返回的数据比较大，该注解在在下载大文件的特别有用
 * 4. @HTTP：通用注解,可以替换以上所有的注解，其拥有三个属性：method，path，hasBody
 * <p>
 * 5. @Query	用于Get中指定参数
 * 6. @QueryMap	和Query使用类似
 * 7. @Path	用于url中的占位符
 * 8. @Url	指定请求路径
 * <p>
 * 9. @Filed	多用于post请求中表单字段,Filed和FieldMap需要FormUrlEncoded结合使用
 * 10. @FiledMap	和@Filed作用一致，用于不确定表单参数
 * 11. @Body	多用于post请求发送非表单数据,比如想要以post方式传递json格式数据
 * <p>
 * 12.@Part	用于表单字段,Part和PartMap与Multipart注解结合使用,适合文件上传的情况
 * 13.@PartMap	用于表单字段,默认接受的类型是Map<String,REquestBody>，可用于实现多文件上传
 * <p>
 * 14 @Headers	用于添加固定请求头，可以同时添加多个。通过该注解添加的请求头不会相互覆盖，而是共同存在
 * 15 @Header	作为方法的参数传入，用于添加不固定值的Header，该注解会更新已有的请求头
 */


public interface ApiService {
    /**
     * 2.get有参请求
     * http://lock.ewsci.cn/api/Lock/Login?username=zhan&pswd=1218
     */
    @GET("api/Lock/Login")
    Call<ResponseBody> loginInfo(@Query("username") String username,
                                   @Query("pswd") String pswd);

    /**
     * 6.post请求;
     * url：http://lock.ewsci.cn/api/Lock/AddUser
     * params:platform=2&page=1
     * FieldMap：多个参数时可以使用，类型@QueryMap
     * FormUrlEncoded：表示请求实体是一个Form表单，每个键值对需要使用@Field注解
     *
     */
    @FormUrlEncoded
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @POST("api/Lock/AddUser")
    Call<ResponseBody> addUser(@Field("OpenId") String OpenId,
                               @Field("AppUuid") String AppUuid,
                               @Field("UserName") String UserName,
                               @Field("AdminPswd") String AdminPswd,
                               @Field("ProPic") String ProPic,
                               @Field("WxName") String WxName,
                               @Field("CompanyUuid") String CompanyUuid,
                               @Field("StatusVal") String StatusVal,
                               @Field("OpenLockPswd") String OpenLockPswd
    );

    //需要添加头
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @POST("api/Lock/AddUser")
    Call<ResponseBody>addUser1(@Body RequestBody  info);


    /**
     * 3.get获取水果列表页面
     * http://lock.ewsci.cn/api/Fruit/GetFruitList?pageindex=1&pagesize=20
     */
    @GET("api/Fruit/GetFruitList")
    Call<ResponseBody> getFruitList(@Query("pageindex") String pageindex,
                                    @Query("pagesize") String pagesize);

     }
